package com.ecoolex.chinadutyfree.retailer.entity;

import com.ecoolex.framework.common.annotation.Description;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import org.springframework.lang.NonNull;

/**
 *
 *   直邮订单数据总量统计表<br>
 *<br>
 * 数据表： direct_mail_goods_order_total_data
 *
 */
@Description({"直邮订单数据总量统计表"})
public class DirectMailGoodsOrderTotalData implements Serializable {
    /**
     *
     *   主键    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.Id
     */
    @Description({"主键", "不能为空", "数据长度: 10"})
    @NonNull
    private Integer id;

    /**
     *
     *   订单累计总数量    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.TotalNumber
     */
    @Description({"订单累计总数量", "数据长度: 10"})
    private Integer totalNumber;

    /**
     *
     *   待支付订单数量    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.UnpaidNumber
     */
    @Description({"待支付订单数量", "数据长度: 10"})
    private Integer unpaidNumber;

    /**
     *
     *   已支付订单数量    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.PaidNumber
     */
    @Description({"已支付订单数量", "数据长度: 10"})
    private Integer paidNumber;

    /**
     *
     *   已发货订单数量    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.ShippedNumber
     */
    @Description({"已发货订单数量", "不能为空", "数据长度: 10"})
    @NonNull
    private Integer shippedNumber;

    /**
     *
     *   确认收货订单数量（已完成）    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.ConfirmNumber
     */
    @Description({"确认收货订单数量（已完成）", "数据长度: 10"})
    private Integer confirmNumber;

    /**
     *
     *   取消订单数量    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.CancelNumber
     */
    @Description({"取消订单数量", "数据长度: 10"})
    private Integer cancelNumber;

    /**
     *
     *   自动取消订单数量    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.AutoCancelNumber
     */
    @Description({"自动取消订单数量", "数据长度: 10"})
    private Integer autoCancelNumber;

    /**
     *
     *   成功订单数量（支付之后的订单）    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.SuccessNumber
     */
    @Description({"成功订单数量（支付之后的订单）", "数据长度: 10"})
    private Integer successNumber;

    /**
     *
     *   售后中的订单数量    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.AfterSalesNumber
     */
    @Description({"售后中的订单数量", "数据长度: 10"})
    private Integer afterSalesNumber;

    /**
     *
     *   交易关闭的数量    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.CloseNumber
     */
    @Description({"交易关闭的数量", "数据长度: 10"})
    private Integer closeNumber;

    /**
     *
     *   订单累计金额    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.TotalPrice
     */
    @Description({"订单累计金额", "数据长度: 18"})
    private BigDecimal totalPrice;

    /**
     *
     *   待支付订单金额    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.UnpaidPrice
     */
    @Description({"待支付订单金额", "数据长度: 18"})
    private BigDecimal unpaidPrice;

    /**
     *
     *   已支付订单总金额    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.PaidPrice
     */
    @Description({"已支付订单总金额", "数据长度: 18"})
    private BigDecimal paidPrice;

    /**
     *
     *   已发货订单总金额    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.ShippedPrice
     */
    @Description({"已发货订单总金额", "数据长度: 18"})
    private BigDecimal shippedPrice;

    /**
     *
     *   确认收货订单总金额    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.ConfirmReceiptPrice
     */
    @Description({"确认收货订单总金额", "数据长度: 18"})
    private BigDecimal confirmReceiptPrice;

    /**
     *
     *   取消订单金额    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.CancelPrice
     */
    @Description({"取消订单金额", "数据长度: 18"})
    private BigDecimal cancelPrice;

    /**
     *
     *   自动取消订单金额    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.AutoCancelPrice
     */
    @Description({"自动取消订单金额", "数据长度: 18"})
    private BigDecimal autoCancelPrice;

    /**
     *
     *   成功订单金额（支付之后的订单）    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.SuccessPrice
     */
    @Description({"成功订单金额（支付之后的订单）", "数据长度: 18"})
    private BigDecimal successPrice;

    /**
     *
     * 字段名： direct_mail_goods_order_total_data.AfterSalesPrice
     */
    private BigDecimal afterSalesPrice;

    /**
     *
     *   交易关闭的金额    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.ClosePrice
     */
    @Description({"交易关闭的金额", "数据长度: 18"})
    private BigDecimal closePrice;

    /**
     *
     *   平均成交订单金额    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.AvgPaidPrice
     */
    @Description({"平均成交订单金额", "数据长度: 18"})
    private BigDecimal avgPaidPrice;

    /**
     *
     *   客单价    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.AvgCustomerPrice
     */
    @Description({"客单价", "数据长度: 18"})
    private BigDecimal avgCustomerPrice;

    /**
     *
     *   支付成功订单的用户数量    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.PaidUserNumber
     */
    @Description({"支付成功订单的用户数量", "数据长度: 10"})
    private Integer paidUserNumber;

    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();

    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();

    /**
     *
     *   逻辑删除    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.Deleted
     */
    @Description({"逻辑删除", "不能为空", "数据长度: 1"})
    @NonNull
    private Boolean deleted;

    /**
     *
     *   创建用户    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.CreateUser
     */
    @Description({"创建用户", "不能为空", "数据长度: 50"})
    @NonNull
    private String createUser;

    /**
     *
     *   创建时间    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.CreateTime
     */
    @Description({"创建时间", "不能为空", "数据长度: 26"})
    @NonNull
    private Date createTime;

    /**
     *
     *   修改用户    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.UpdateUser
     */
    @Description({"修改用户", "不能为空", "数据长度: 50"})
    @NonNull
    private String updateUser;

    /**
     *
     *   修改时间    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.UpdateTime
     */
    @Description({"修改时间", "不能为空", "数据长度: 26"})
    @NonNull
    private Date updateTime;

    private static final long serialVersionUID = 1L;

    /**
     * 获取参数<br><br>
     *
     *   主键    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.Id
     */
    public Integer getId() {
        return id;
    }

    /**
     * 设置参数<br><br>
     *
     *   主键<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.Id
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * 获取参数<br><br>
     *
     *   订单累计总数量    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.TotalNumber
     */
    public Integer getTotalNumber() {
        return totalNumber;
    }

    /**
     * 设置参数<br><br>
     *
     *   订单累计总数量<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.TotalNumber
     */
    public void setTotalNumber(Integer totalNumber) {
        this.totalNumber = totalNumber;
    }

    /**
     * 获取参数<br><br>
     *
     *   待支付订单数量    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.UnpaidNumber
     */
    public Integer getUnpaidNumber() {
        return unpaidNumber;
    }

    /**
     * 设置参数<br><br>
     *
     *   待支付订单数量<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.UnpaidNumber
     */
    public void setUnpaidNumber(Integer unpaidNumber) {
        this.unpaidNumber = unpaidNumber;
    }

    /**
     * 获取参数<br><br>
     *
     *   已支付订单数量    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.PaidNumber
     */
    public Integer getPaidNumber() {
        return paidNumber;
    }

    /**
     * 设置参数<br><br>
     *
     *   已支付订单数量<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.PaidNumber
     */
    public void setPaidNumber(Integer paidNumber) {
        this.paidNumber = paidNumber;
    }

    /**
     * 获取参数<br><br>
     *
     *   已发货订单数量    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.ShippedNumber
     */
    public Integer getShippedNumber() {
        return shippedNumber;
    }

    /**
     * 设置参数<br><br>
     *
     *   已发货订单数量<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.ShippedNumber
     */
    public void setShippedNumber(Integer shippedNumber) {
        this.shippedNumber = shippedNumber;
    }

    /**
     * 获取参数<br><br>
     *
     *   确认收货订单数量（已完成）    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.ConfirmNumber
     */
    public Integer getConfirmNumber() {
        return confirmNumber;
    }

    /**
     * 设置参数<br><br>
     *
     *   确认收货订单数量（已完成）<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.ConfirmNumber
     */
    public void setConfirmNumber(Integer confirmNumber) {
        this.confirmNumber = confirmNumber;
    }

    /**
     * 获取参数<br><br>
     *
     *   取消订单数量    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.CancelNumber
     */
    public Integer getCancelNumber() {
        return cancelNumber;
    }

    /**
     * 设置参数<br><br>
     *
     *   取消订单数量<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.CancelNumber
     */
    public void setCancelNumber(Integer cancelNumber) {
        this.cancelNumber = cancelNumber;
    }

    /**
     * 获取参数<br><br>
     *
     *   自动取消订单数量    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.AutoCancelNumber
     */
    public Integer getAutoCancelNumber() {
        return autoCancelNumber;
    }

    /**
     * 设置参数<br><br>
     *
     *   自动取消订单数量<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.AutoCancelNumber
     */
    public void setAutoCancelNumber(Integer autoCancelNumber) {
        this.autoCancelNumber = autoCancelNumber;
    }

    /**
     * 获取参数<br><br>
     *
     *   成功订单数量（支付之后的订单）    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.SuccessNumber
     */
    public Integer getSuccessNumber() {
        return successNumber;
    }

    /**
     * 设置参数<br><br>
     *
     *   成功订单数量（支付之后的订单）<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.SuccessNumber
     */
    public void setSuccessNumber(Integer successNumber) {
        this.successNumber = successNumber;
    }

    /**
     * 获取参数<br><br>
     *
     *   售后中的订单数量    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.AfterSalesNumber
     */
    public Integer getAfterSalesNumber() {
        return afterSalesNumber;
    }

    /**
     * 设置参数<br><br>
     *
     *   售后中的订单数量<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.AfterSalesNumber
     */
    public void setAfterSalesNumber(Integer afterSalesNumber) {
        this.afterSalesNumber = afterSalesNumber;
    }

    /**
     * 获取参数<br><br>
     *
     *   交易关闭的数量    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.CloseNumber
     */
    public Integer getCloseNumber() {
        return closeNumber;
    }

    /**
     * 设置参数<br><br>
     *
     *   交易关闭的数量<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.CloseNumber
     */
    public void setCloseNumber(Integer closeNumber) {
        this.closeNumber = closeNumber;
    }

    /**
     * 获取参数<br><br>
     *
     *   订单累计金额    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.TotalPrice
     */
    public BigDecimal getTotalPrice() {
        return totalPrice;
    }

    /**
     * 设置参数<br><br>
     *
     *   订单累计金额<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.TotalPrice
     */
    public void setTotalPrice(BigDecimal totalPrice) {
        this.totalPrice = totalPrice;
    }

    /**
     * 获取参数<br><br>
     *
     *   待支付订单金额    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.UnpaidPrice
     */
    public BigDecimal getUnpaidPrice() {
        return unpaidPrice;
    }

    /**
     * 设置参数<br><br>
     *
     *   待支付订单金额<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.UnpaidPrice
     */
    public void setUnpaidPrice(BigDecimal unpaidPrice) {
        this.unpaidPrice = unpaidPrice;
    }

    /**
     * 获取参数<br><br>
     *
     *   已支付订单总金额    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.PaidPrice
     */
    public BigDecimal getPaidPrice() {
        return paidPrice;
    }

    /**
     * 设置参数<br><br>
     *
     *   已支付订单总金额<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.PaidPrice
     */
    public void setPaidPrice(BigDecimal paidPrice) {
        this.paidPrice = paidPrice;
    }

    /**
     * 获取参数<br><br>
     *
     *   已发货订单总金额    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.ShippedPrice
     */
    public BigDecimal getShippedPrice() {
        return shippedPrice;
    }

    /**
     * 设置参数<br><br>
     *
     *   已发货订单总金额<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.ShippedPrice
     */
    public void setShippedPrice(BigDecimal shippedPrice) {
        this.shippedPrice = shippedPrice;
    }

    /**
     * 获取参数<br><br>
     *
     *   确认收货订单总金额    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.ConfirmReceiptPrice
     */
    public BigDecimal getConfirmReceiptPrice() {
        return confirmReceiptPrice;
    }

    /**
     * 设置参数<br><br>
     *
     *   确认收货订单总金额<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.ConfirmReceiptPrice
     */
    public void setConfirmReceiptPrice(BigDecimal confirmReceiptPrice) {
        this.confirmReceiptPrice = confirmReceiptPrice;
    }

    /**
     * 获取参数<br><br>
     *
     *   取消订单金额    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.CancelPrice
     */
    public BigDecimal getCancelPrice() {
        return cancelPrice;
    }

    /**
     * 设置参数<br><br>
     *
     *   取消订单金额<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.CancelPrice
     */
    public void setCancelPrice(BigDecimal cancelPrice) {
        this.cancelPrice = cancelPrice;
    }

    /**
     * 获取参数<br><br>
     *
     *   自动取消订单金额    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.AutoCancelPrice
     */
    public BigDecimal getAutoCancelPrice() {
        return autoCancelPrice;
    }

    /**
     * 设置参数<br><br>
     *
     *   自动取消订单金额<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.AutoCancelPrice
     */
    public void setAutoCancelPrice(BigDecimal autoCancelPrice) {
        this.autoCancelPrice = autoCancelPrice;
    }

    /**
     * 获取参数<br><br>
     *
     *   成功订单金额（支付之后的订单）    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.SuccessPrice
     */
    public BigDecimal getSuccessPrice() {
        return successPrice;
    }

    /**
     * 设置参数<br><br>
     *
     *   成功订单金额（支付之后的订单）<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.SuccessPrice
     */
    public void setSuccessPrice(BigDecimal successPrice) {
        this.successPrice = successPrice;
    }

    /**
     * 获取参数<br><br>
     *
     * 字段名： direct_mail_goods_order_total_data.AfterSalesPrice
     */
    public BigDecimal getAfterSalesPrice() {
        return afterSalesPrice;
    }

    /**
     * 设置参数<br><br>
     *
     * 字段名： direct_mail_goods_order_total_data.AfterSalesPrice
     */
    public void setAfterSalesPrice(BigDecimal afterSalesPrice) {
        this.afterSalesPrice = afterSalesPrice;
    }

    /**
     * 获取参数<br><br>
     *
     *   交易关闭的金额    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.ClosePrice
     */
    public BigDecimal getClosePrice() {
        return closePrice;
    }

    /**
     * 设置参数<br><br>
     *
     *   交易关闭的金额<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.ClosePrice
     */
    public void setClosePrice(BigDecimal closePrice) {
        this.closePrice = closePrice;
    }

    /**
     * 获取参数<br><br>
     *
     *   平均成交订单金额    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.AvgPaidPrice
     */
    public BigDecimal getAvgPaidPrice() {
        return avgPaidPrice;
    }

    /**
     * 设置参数<br><br>
     *
     *   平均成交订单金额<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.AvgPaidPrice
     */
    public void setAvgPaidPrice(BigDecimal avgPaidPrice) {
        this.avgPaidPrice = avgPaidPrice;
    }

    /**
     * 获取参数<br><br>
     *
     *   客单价    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.AvgCustomerPrice
     */
    public BigDecimal getAvgCustomerPrice() {
        return avgCustomerPrice;
    }

    /**
     * 设置参数<br><br>
     *
     *   客单价<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.AvgCustomerPrice
     */
    public void setAvgCustomerPrice(BigDecimal avgCustomerPrice) {
        this.avgCustomerPrice = avgCustomerPrice;
    }

    /**
     * 获取参数<br><br>
     *
     *   支付成功订单的用户数量    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.PaidUserNumber
     */
    public Integer getPaidUserNumber() {
        return paidUserNumber;
    }

    /**
     * 设置参数<br><br>
     *
     *   支付成功订单的用户数量<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.PaidUserNumber
     */
    public void setPaidUserNumber(Integer paidUserNumber) {
        this.paidUserNumber = paidUserNumber;
    }

    public void andLogicalDeleted(boolean deleted) {
        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());
    }

    /**
     * 获取参数<br><br>
     *
     *   逻辑删除    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.Deleted
     */
    public Boolean getDeleted() {
        return deleted;
    }

    /**
     * 设置参数<br><br>
     *
     *   逻辑删除<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.Deleted
     */
    public void setDeleted(Boolean deleted) {
        this.deleted = deleted;
    }

    /**
     * 获取参数<br><br>
     *
     *   创建用户    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.CreateUser
     */
    public String getCreateUser() {
        return createUser;
    }

    /**
     * 设置参数<br><br>
     *
     *   创建用户<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.CreateUser
     */
    public void setCreateUser(String createUser) {
        this.createUser = createUser == null ? null : createUser.trim();
    }

    /**
     * 获取参数<br><br>
     *
     *   创建时间    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.CreateTime
     */
    public Date getCreateTime() {
        return createTime;
    }

    /**
     * 设置参数<br><br>
     *
     *   创建时间<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.CreateTime
     */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /**
     * 获取参数<br><br>
     *
     *   修改用户    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.UpdateUser
     */
    public String getUpdateUser() {
        return updateUser;
    }

    /**
     * 设置参数<br><br>
     *
     *   修改用户<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.UpdateUser
     */
    public void setUpdateUser(String updateUser) {
        this.updateUser = updateUser == null ? null : updateUser.trim();
    }

    /**
     * 获取参数<br><br>
     *
     *   修改时间    <br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.UpdateTime
     */
    public Date getUpdateTime() {
        return updateTime;
    }

    /**
     * 设置参数<br><br>
     *
     *   修改时间<br>
     *<br>
     * 字段名： direct_mail_goods_order_total_data.UpdateTime
     */
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public enum Deleted {
        NOT_DELETED(new Boolean("false"), "未删除"),
        IS_DELETED(new Boolean("true"), "已删除");

        private final Boolean value;

        private final String name;

        Deleted(Boolean value, String name) {
            this.value = value;
            this.name = name;
        }

        public Boolean getValue() {
            return this.value;
        }

        public Boolean value() {
            return this.value;
        }

        public String getName() {
            return this.name;
        }
    }

    public enum Column {
        id("Id", "id", "INTEGER", false),
        totalNumber("TotalNumber", "totalNumber", "INTEGER", false),
        unpaidNumber("UnpaidNumber", "unpaidNumber", "INTEGER", false),
        paidNumber("PaidNumber", "paidNumber", "INTEGER", false),
        shippedNumber("ShippedNumber", "shippedNumber", "INTEGER", false),
        confirmNumber("ConfirmNumber", "confirmNumber", "INTEGER", false),
        cancelNumber("CancelNumber", "cancelNumber", "INTEGER", false),
        autoCancelNumber("AutoCancelNumber", "autoCancelNumber", "INTEGER", false),
        successNumber("SuccessNumber", "successNumber", "INTEGER", false),
        afterSalesNumber("AfterSalesNumber", "afterSalesNumber", "INTEGER", false),
        closeNumber("CloseNumber", "closeNumber", "INTEGER", false),
        totalPrice("TotalPrice", "totalPrice", "DECIMAL", false),
        unpaidPrice("UnpaidPrice", "unpaidPrice", "DECIMAL", false),
        paidPrice("PaidPrice", "paidPrice", "DECIMAL", false),
        shippedPrice("ShippedPrice", "shippedPrice", "DECIMAL", false),
        confirmReceiptPrice("ConfirmReceiptPrice", "confirmReceiptPrice", "DECIMAL", false),
        cancelPrice("CancelPrice", "cancelPrice", "DECIMAL", false),
        autoCancelPrice("AutoCancelPrice", "autoCancelPrice", "DECIMAL", false),
        successPrice("SuccessPrice", "successPrice", "DECIMAL", false),
        afterSalesPrice("AfterSalesPrice", "afterSalesPrice", "DECIMAL", false),
        closePrice("ClosePrice", "closePrice", "DECIMAL", false),
        avgPaidPrice("AvgPaidPrice", "avgPaidPrice", "DECIMAL", false),
        avgCustomerPrice("AvgCustomerPrice", "avgCustomerPrice", "DECIMAL", false),
        paidUserNumber("PaidUserNumber", "paidUserNumber", "INTEGER", false),
        deleted("Deleted", "deleted", "BIT", false),
        createUser("CreateUser", "createUser", "VARCHAR", true),
        createTime("CreateTime", "createTime", "TIMESTAMP", false),
        updateUser("UpdateUser", "updateUser", "VARCHAR", false),
        updateTime("UpdateTime", "updateTime", "TIMESTAMP", false);

        private static final String BEGINNING_DELIMITER = "`";

        private static final String ENDING_DELIMITER = "`";

        private final String column;

        private final boolean isColumnNameDelimited;

        private final String javaProperty;

        private final String jdbcType;

        public String value() {
            return this.column;
        }

        public String getValue() {
            return this.column;
        }

        public String getJavaProperty() {
            return this.javaProperty;
        }

        public String getJdbcType() {
            return this.jdbcType;
        }

        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {
            this.column = column;
            this.javaProperty = javaProperty;
            this.jdbcType = jdbcType;
            this.isColumnNameDelimited = isColumnNameDelimited;
        }

        public String desc() {
            return this.getEscapedColumnName() + " DESC";
        }

        public String asc() {
            return this.getEscapedColumnName() + " ASC";
        }

        public static Column[] excludes(Column ... excludes) {
            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));
            if (excludes != null && excludes.length > 0) {
                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));
            }
            return columns.toArray(new Column[]{});
        }

        public String getEscapedColumnName() {
            if (this.isColumnNameDelimited) {
                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();
            } else {
                return this.column;
            }
        }
    }
}